package cn.javase.base.comclasses._01_字符串;

import org.junit.jupiter.api.Test;

public class _03_字符串常见面试题 {

    @Test
    public void test1() {
        String a1 = "abc";
        String a2 = new String("abc");
        System.out.println(a1 == a2); // false
        System.out.println(a1.equals(a2)); // true
    }

    @Test
    public void test2() {
        String s1 = "a" + "b" + "c";
        String s2 = "abc";
        System.out.println(s1 == s2); // true
    }

    @Test
    public void test3() {
        String s1 = "abc";
        String s2 = "ab";
        String s3 = s2 + "c";
        System.out.println(s1 == s3); // false
        System.out.println(s1.equals(s3)); // true
    }

    // 依旧有些疑惑哦~
    @Test
    public void test4() {
        // 问题：创建了几个对象？共5个
        // 字符串常量池中1个
        String s1 = "a";
        // 字符串常量池中1个，堆1个
        String s2 = new String("b");
        // 堆中2个（StringBuilder对象，String对象）
        String s3 = s1 + s2;
    }

    // 依旧有些疑惑哦~
    @Test
    public void test5() {
        // 问题：创建了几个对象？
        /*
            6个对象
            字符串常量池中2个
            StringBuilder中1个
            堆中的String 3个
         */
        String s = new String("a") + new String("b");
    }

}
